<?php
/**
 * Created by PhpStorm.
 * User: li gui gong
 * Date: 2018/2/2
 * Time: 10:48
 */
/**
 * @param $data需要过滤的参数
 * @return string 过滤后的参数
 */
function removeXSS($data){
    require_once './htmlpurifier-4.6.0/HTMLPurifier.auto.php';
    $_clean_xss_config = HTMLPurifier_Config::createDefault();
    $_clean_xss_config->set('Core.Encoding', 'UTF-8');
    $_clean_xss_config->set('HTML.Allowed','div,b,strong,i,em,a[href|title],ul,ol,li,p[style],br,span[style],img[width|height|alt|src]');
    $_clean_xss_config->set('CSS.AllowedProperties', 'font,font-size,font-weight,font-style,font-family,text-decoration,padding-left,color,background-color,text-align');
    $_clean_xss_config->set('HTML.TargetBlank', TRUE);
    $_clean_xss_obj = new HTMLPurifier($_clean_xss_config);
    return $_clean_xss_obj->purify($data);
}


/**
 * 功能:上传图片并生成缩略图(可以有多张缩略图)
 * 用法:
 * $ret = uploadOne('logo','Goods',array(   第一个参数是上传图的name值
array(600,600),                     第二个参数是二级图片存的路径
array(300,300),                     第三个参数是缩略图的不同大小(如果不需要缩略图就可以不输入)
array(100,100),
 * ));
 * 返回值:
 * if($ret['ok'] == 1){  //如果成功
$ret['images'][0];   //原图地址
$ret['images'][1];   //第一个缩略图地址
$ret['images'][2];   //第二个缩略图地址
$ret['images'][3];   //第三个缩略图地址
 * }else{
$this->error = $ret['error'];  //错误信息
 *      return false;
 * }
 */

function uploadOne($imgName,$dirname,$thumb = array()){
    if(isset($_FILES[$imgName])&&$_FILES[$imgName]['error'] == 0){
        $rootPath = C('IMG_rootPath');// 设置附件上传根目录
        $upload = new \Think\Upload(array(
            'rootPath' => $rootPath,
        ));// 实例化上传类

        $upload->maxSize = intval(C('IMG_maxSize')*1024*1024);
        $upload->exts = C('IMG_exts');// 设置附件上传类型
//            $upload->rootPath = C('IMG_rootPath');//这个必须在对象创建的时候用一个数组传入
        $upload->savePath = $dirname.'/'; // 图片二级目录的名称
        // 上传文件
        //上传指定一个上传图片的名称,否则会把表单中所有的图片都处理,之后在想处理其他图片就找不到啦upload传一个文件名
        $info = $upload->upload(array($imgName=>$_FILES[$imgName]));

        if(!$info){//如果上传失败
            return array(
                'ok' => 0,
                'error' =>$upload->getError(),
            );
        }else{
            $ret['ok'] = 1;
            $ret['images'][0] = $logoName = $info[$imgName]['savepath'] . $info[$imgName]['savename'];
            //判断是否生成缩略图
            if($thumb){
                $image = new \Think\Image();
                //循环生成缩略图
                foreach($thumb as $k=>$v){
                    $ret['images'][$k+1] = $info[$imgName]['savepath'] . 'thumb_'.$k.'_' . $info[$imgName]['savename'];
                    //打开要处理的图片
                    $image->open($rootPath.$logoName);
                    $image->thumb($v[0], $v[1],6)->save($rootPath.$ret['images'][$k+1]);
                }
            }
            return $ret;
        }
    }
}



/**
 * 分页方法直接调用
 * $count 总页数  $pagenumber每页的分页数
 * 返回分页对象
 * @author 李贵功
 */
function mypage($count,$pagenumber){
    $Page = new \Think\Page($count,$pagenumber);//实例化分页类记录数和每页显示的记录数

    // 修改分页样式
    $Page->lastSuffix = false; //最后一页是否显示总页数
    $Page->rollPage = 4;  //分页栏每页显示的页面
    $Page->setConfig('header', '共%TOTAL_ROW%条数据，当前第%NOW_PAGE%/%TOTAL_PAGE%页');
    $Page->setConfig('prev', '上一页');
    $Page->setConfig('first', '首页');
    $Page->setConfig('last',   '尾页');
    $Page->setConfig('next', '下一页');
    $Page->setConfig('theme','%HEADER% %FIRST% %UP_PAGE%  %LINK_PAGE%  %DOWN_PAGE% %END%');

    // 返回分页对象
    return $Page;
}

/**
 * @param $url 数据库中的图片路径
 * @param string $width
 * @param string $height
 */
function showImage($url, $width = '', $height = '')
{
    $ic = C('viewPath');
    if($width)
        $width = "width='$width'";
    if($height)
        $height = "height='$height'";
    echo "<img $width $height src='{$ic}$url' />";
}

// 删除图片：参数：一维数组：所有要删除的图片的路径
function deleteImage($images)
{
    // 先取出图片所在目录
    $rp = C('IMG_rootPath');
    foreach ($images as $v){
        // @错误抵制符：忽略掉错误,一般在删除文件时都添加上这个
        @unlink($rp . $v);
    }
}

/**
 * 制作下拉框(添加或者修改时)
 * @param $tableName  表名
 * @param $selectName 选择字段
 * @param $valueFieldName
 * @param $textFieldName
 * @param string $selectedValue
 */
function buildSelect($tableName, $selectName, $valueFieldName, $textFieldName, $selectedValue = '')
{
    $model = D($tableName);
    $data = $model->field("$valueFieldName,$textFieldName")->select();
    $select = "<select name='$selectName'><option value=''>请选择</option>";
    foreach ($data as $k => $v)
    {
        $value = $v[$valueFieldName];
        $text = $v[$textFieldName];
        if($selectedValue && $selectedValue==$value)
            $selected = 'selected="selected"';
        else
            $selected = '';
        $select .= '<option '.$selected.' value="'.$value.'">'.$text.'</option>';
    }
    $select .= '</select>';
    echo $select;
}






